home *** CD-ROM | disk | FTP | other *** search
- property audioMembers, suspended
-
- on new me, parameterList
- set audioMembers to [0, 0, 0, 0]
- set suspended to 0
- return me
- end
-
- on PlayAudio me, channel, newMember
- if (newMember <= 0) or (channel <= 0) then
- put "bad values"
- else
- set oldMember to getAt(audioMembers, channel)
- if not suspended then
- puppetSound(channel, newMember)
- WaitTicks(15)
- end if
- setAt(audioMembers, channel, newMember)
- end if
- end
-
- on StopAudio me, channel, audioMember
- set currAudio to getAt(audioMembers, channel)
- if voidp(audioMember) or (audioMember = 0) or (audioMember = currAudio) then
- if voidp(channel) or (channel = 0) then
- KillAudio(me)
- else
- sound stop channel
- setAt(audioMembers, channel, 0)
- end if
- end if
- end
-
- on SuspendAudio me
- if suspended = 0 then
- put "Suspending Audio" && audioMembers
- repeat with channel = 1 to 4
- if soundBusy(channel) then
- put "Suspending channel" && channel
- sound stop channel
- next repeat
- end if
- setAt(audioMembers, channel, 0)
- end repeat
- set suspended to 1
- end if
- end
-
- on ResumeAudio me
- setAt(audioMembers, 2, 0)
- if suspended = 1 then
- put "Resuming normal audio play:" && audioMembers
- repeat with channel = 1 to 4
- puppetSound(channel, getAt(audioMembers, channel))
- end repeat
- set suspended to 0
- end if
- end
-
- on KillAudio me
- repeat with channel = 1 to 4
- sound stop channel
- end repeat
- set audioMembers to [0, 0, 0, 0]
- end
-
- on dispose me
- KillAudio()
- set audioMembers to 0
- end
-